1. Field of the Invention
The present invention relates generally to data communications, and more particularly to parallel data communications in digital systems.
2. Description of the Background Art
Data is typically transferred between electronic devices by changing the data signal (e.g. current or voltage level) transmitted over a conductive wire or other coupling mechanism for conducting such transmission. Data transmission in which a group of data bits moves concurrently over several channels is referred to as parallel transmission, while data transmission in which data bits move over a single channel, one after the other, is referred to as serial transmission.
Parallel transmission, being generally faster than serial transmission, is widely used in applications where the length of the channel is relatively short, e.g., a bus connecting integrated circuits on a printed circuit board, a connection between a printer and a personal computer, communication between closely located systems, etc. However, parallel transmission over long distances can be affected by different propagation delays in the parallel channels. This difference, when it exists, causes the arrival times of individual data bits at the destination receiver to be different, and the difference in arrival times is referred to as “skew”.
Skew is generally not disruptive in applications where the channel lengths are kept relatively short and the data transfer speeds are slow. However, as channel lengths or data transfer speeds are increased, the propagation delay on individual channels accumulates, thereby increasing the duration and effect of the skew. A sufficiently large skew can further cause data bits from one word to drift into the data bits of the next word, resulting in data transmission errors.
Various approaches exist for addressing skew-related problems in conventionally configured systems. One approach is to create individual serial data bit streams from the data in each channel. This approach involves encoding a clock signal into the transmitted bit stream at the transmitter, and then using signal processing techniques at the receiver to recover the clock signal and reconstruct successive data words. Unfortunately, the additional encoded clock data utilizes valuable channel bandwidth of each channel during transmission, and requires complex signal processing at the receiver.
Another approach, which is employed in modems, is to perform a complex set of durational analyses using test signal patterns on each of the parallel channels. The tests are designed to reveal a “characteristic skew” of each channel. Compensation or filter circuits are then used to compensate for the determined durational variance for each channel. This approach, however, is also problematic in that the propagation delays causing the skew can be dynamically affected by a significant number of variables, such as temperature, voltage, etc., which variables are themselves in constant flux. Hence, the tests are not sufficiently accurate over a longer period of time. To compensate for this, data transmission is frequently interrupted for relatively extensive periods of time in order to effectively take the system offline (with regard to “live” data), inject the test patterns and conduct the durational tests in an ongoing manner. Consequently, data transmission rates suffer.
Another approach involves “hand tuning” individual wires of a wire bundle and then painstakingly assembling the hand-tuned wires into a data transmission cable. This scheme does mitigate the skew problem somewhat by allowing longer cables to be produced without exceeding certain maximum acceptable durations of channel skew. It does not, however, address the root of the problem and can only achieve marginal improvements in channel length. The resulting cables are also very expensive in comparison to the benefit they confer, making them unsuitable for general widespread use.
As was already noted, the above approaches have been developed according to conventional data communication systems, in which the transmitted data signal (e.g. voltage level) for each received bit of data is detected against a fixed reference voltage (e.g. d.c. reference voltage). The approaches have also been widely adopted for differential signal switching in which the receiver digitizes small swing signal to full power supply rails for each channel regardless of skew (assuming the differential pair has limited skew compared to all channels in the parallel bus). Some have also been adopted for pseudo-differential signal switching, in which the receiver digitizes the small swing signal to full swings using a fixed voltage reference regardless of skew.
Unfortunately, as was also noted, each of the above approaches is also problematic with regard to even the particular systems for which they were developed.
Accordingly, there is a need for systems and methods capable of enabling a more accurate and reliable manner of detecting, or further, compensating for skew distortion, and thereby providing for more reliable transmission and reception of signals (including parallel data channels) over longer distances, at higher frequency or both. There is also a need for such systems and methods that are capable of conducting such detecting and/or compensating with minimal detrimental impact on channel bandwidth, and further, with minimal added implementation costs and complexity.